﻿using DigDes.DSchool.SUPS.DataAccess.Interface;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;


namespace DigDes.DSchool.SUPS.DataAccess.Database
{
    public class FileLoaderDAC
    {
        // TODO: вынести общий функционал для подобных классов доступа к БД в общий класс BaseDAC

        // Сама строка хранится в app.config (web.config) файле исполняемого файла, который дёрнет метод этой библиотеки классов.
        // В нашем случае это DigDes.DSchool.SUPS.Test.App файл App.Config.

        private static readonly string ConnectionStringKey = "SUPSDB";

        public static void AddRow(RailwayLoader row)
        {
            var connectionString = ConfigurationManager.ConnectionStrings[ConnectionStringKey].ConnectionString;
            using (var sqlConn = new SqlConnection(connectionString))
            {
                using (var sqlCmd = sqlConn.CreateCommand())
                {
                    sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    sqlCmd.CommandText = "dbo.InsertRailwayDB";
                    sqlCmd.Parameters.AddWithValue("@WagonNumber", row.WagonNumber);
                    sqlCmd.Parameters.AddWithValue("@Weight", row.Weight);
                    sqlCmd.Parameters.AddWithValue("@Destination", row.Destination);
                    sqlCmd.Parameters.AddWithValue("@CargoCode", row.CargoCode);
                    sqlCmd.Parameters.AddWithValue("@CodeOfConsignee", row.CodeOfConsignee);
                    sqlCmd.Parameters.AddWithValue("@TypeOfWagon", row.TypeOfWagon);
                    sqlCmd.Parameters.AddWithValue("@FirstStation", row.FirstStation);
                    sqlCmd.Parameters.AddWithValue("@CodeOfOperation", row.CodeOfOperation);
                    sqlCmd.Parameters.AddWithValue("@DateOfOperation", row.DateOfOperation);
                    sqlCmd.Parameters.AddWithValue("@YearOfOperation", row.YearOfOperation);
                    sqlCmd.Parameters.AddWithValue("@TimeOfOperation", row.TimeOfOperation);
                    sqlCmd.Parameters.AddWithValue("@StationAchievementsOperations", row.StationAchievementsOperations);
                    sqlCmd.Parameters.AddWithValue("@WayOfDelivery", row.WayOfDelivery);
                    sqlCmd.Parameters.AddWithValue("@WayOfReception", row.WayOfReception);
                    sqlCmd.Parameters.AddWithValue("@IndexOfTrain", row.IndexOfTrain);
                    sqlCmd.Parameters.AddWithValue("@NumberOfTrain", row.NumberOfTrain);
                    sqlCmd.Parameters.AddWithValue("@Cargo_ID", 0);
                    sqlConn.Open();
                    sqlCmd.ExecuteNonQuery();
                }
            }
        }

        public static void AddAllRows(IEnumerable<RailwayLoader> rows)
        {
            foreach (var row in rows)
            {
                AddRow(row);
            }
        }
    }
}
